curl --request POST \
--url http://10.2.4.166:8080/composer/api/folders \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/vnd.composer.v3+json' \
--header 'X-Enable-Preview: <x-enable-preview>' \
--data '
{
"folder_name": "My Folder",
"description": "This folder contains dashboards",
"parent_id": "a1b2c3d4-0000-0000-0000-000000000000",
"inheritance_state": "INHERIT",
"content_type": "DASHBOARDS"
}
'import requests
url = "http://10.2.4.166:8080/composer/api/folders"
payload = {
"folder_name": "My Folder",
"description": "This folder contains dashboards",
"parent_id": "a1b2c3d4-0000-0000-0000-000000000000",
"inheritance_state": "INHERIT",
"content_type": "DASHBOARDS"
}
headers = {
"X-Enable-Preview": "<x-enable-preview>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/vnd.composer.v3+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Enable-Preview': '<x-enable-preview>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/vnd.composer.v3+json'
},
body: JSON.stringify({
folder_name: 'My Folder',
description: 'This folder contains dashboards',
parent_id: 'a1b2c3d4-0000-0000-0000-000000000000',
inheritance_state: 'INHERIT',
content_type: 'DASHBOARDS'
})
};
fetch('http://10.2.4.166:8080/composer/api/folders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://10.2.4.166:8080/composer/api/folders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'folder_name' => 'My Folder',
'description' => 'This folder contains dashboards',
'parent_id' => 'a1b2c3d4-0000-0000-0000-000000000000',
'inheritance_state' => 'INHERIT',
'content_type' => 'DASHBOARDS'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/vnd.composer.v3+json",
"X-Enable-Preview: <x-enable-preview>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://10.2.4.166:8080/composer/api/folders"
payload := strings.NewReader("{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Enable-Preview", "<x-enable-preview>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/vnd.composer.v3+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://10.2.4.166:8080/composer/api/folders")
.header("X-Enable-Preview", "<x-enable-preview>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/vnd.composer.v3+json")
.body("{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://10.2.4.166:8080/composer/api/folders")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["X-Enable-Preview"] = '<x-enable-preview>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/vnd.composer.v3+json'
request.body = "{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"parent_id": "<string>",
"materialized_path": "<string>",
"project_id": "<string>",
"project_type": "DEFAULT",
"permissions": [
"READ"
],
"visibility": "PRIVATE",
"inheritance_state": "INHERIT",
"folder_type": "CONNECTIONS",
"content_type": "DASHBOARDS"
}[Experimental] Create a new folder
curl --request POST \
--url http://10.2.4.166:8080/composer/api/folders \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/vnd.composer.v3+json' \
--header 'X-Enable-Preview: <x-enable-preview>' \
--data '
{
"folder_name": "My Folder",
"description": "This folder contains dashboards",
"parent_id": "a1b2c3d4-0000-0000-0000-000000000000",
"inheritance_state": "INHERIT",
"content_type": "DASHBOARDS"
}
'import requests
url = "http://10.2.4.166:8080/composer/api/folders"
payload = {
"folder_name": "My Folder",
"description": "This folder contains dashboards",
"parent_id": "a1b2c3d4-0000-0000-0000-000000000000",
"inheritance_state": "INHERIT",
"content_type": "DASHBOARDS"
}
headers = {
"X-Enable-Preview": "<x-enable-preview>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/vnd.composer.v3+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Enable-Preview': '<x-enable-preview>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/vnd.composer.v3+json'
},
body: JSON.stringify({
folder_name: 'My Folder',
description: 'This folder contains dashboards',
parent_id: 'a1b2c3d4-0000-0000-0000-000000000000',
inheritance_state: 'INHERIT',
content_type: 'DASHBOARDS'
})
};
fetch('http://10.2.4.166:8080/composer/api/folders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://10.2.4.166:8080/composer/api/folders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'folder_name' => 'My Folder',
'description' => 'This folder contains dashboards',
'parent_id' => 'a1b2c3d4-0000-0000-0000-000000000000',
'inheritance_state' => 'INHERIT',
'content_type' => 'DASHBOARDS'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/vnd.composer.v3+json",
"X-Enable-Preview: <x-enable-preview>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://10.2.4.166:8080/composer/api/folders"
payload := strings.NewReader("{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Enable-Preview", "<x-enable-preview>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/vnd.composer.v3+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://10.2.4.166:8080/composer/api/folders")
.header("X-Enable-Preview", "<x-enable-preview>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/vnd.composer.v3+json")
.body("{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://10.2.4.166:8080/composer/api/folders")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["X-Enable-Preview"] = '<x-enable-preview>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/vnd.composer.v3+json'
request.body = "{\n \"folder_name\": \"My Folder\",\n \"description\": \"This folder contains dashboards\",\n \"parent_id\": \"a1b2c3d4-0000-0000-0000-000000000000\",\n \"inheritance_state\": \"INHERIT\",\n \"content_type\": \"DASHBOARDS\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"parent_id": "<string>",
"materialized_path": "<string>",
"project_id": "<string>",
"project_type": "DEFAULT",
"permissions": [
"READ"
],
"visibility": "PRIVATE",
"inheritance_state": "INHERIT",
"folder_type": "CONNECTIONS",
"content_type": "DASHBOARDS"
}Authorizations
HTTP Basic authentication using global administrator credentials (username and password).
Headers
Opt-in header required to access this experimental endpoint. Must be "true" (case-insensitive).
Body
Request object for creating a new folder
The name of the folder
100"My Folder"
Optional description of the folder
250"This folder contains dashboards"
The id of the parent folder; omit to create a root-level folder
"a1b2c3d4-0000-0000-0000-000000000000"
ACL inheritance mode for the new folder; defaults to INHERIT when omitted
INHERIT, EXPLICIT "INHERIT"
The library this folder organizes (DASHBOARDS or REPORTS). Required when parent_id is omitted (a root-level folder); ignored when parent_id is set — a child folder always inherits its parent's value
DASHBOARDS, REPORTS "DASHBOARDS"
Response
Created
Response object describing a newly created folder
The unique identifier of the created folder
The name of the created folder
The folder's description; null when none was ever set
The id of the parent folder; null means this is a root folder
Full path from root; null for legacy folders not yet backfilled
The identifier of the project that owns the folder
The type of the owning project
DEFAULT, GLOBAL, CUSTOM, PERSONAL, LIBRARY_CUSTOM The caller's own effective permissions on this folder, as an array of FolderAclBit names (READ, WRITE, CREATE, DELETE, ADMINISTER, OWNER), e.g. ["READ","WRITE"]. Computed per caller at request time, so it reflects real access: the creator of a root folder is its owner and sees all six, while a subfolder resolves to whatever the caller holds on the governing ancestor. Matches what a permissions query for the same folder and caller returns.
READ, WRITE, CREATE, DELETE, ADMINISTER, OWNER The folder's visibility
PRIVATE, CUSTOM The folder's ACL inheritance state
INHERIT, EXPLICIT The type of the folder
CONNECTIONS, SOURCES, VISUALS, DASHBOARDS, REPORTS, PRIVATE, CUSTOM The library this folder organizes (DASHBOARDS or REPORTS), resolved by the server; null when untagged
DASHBOARDS, REPORTS Was this page helpful?